利用 pingouin 套件中的功能來畫各個變數的 Q-Q Plot。pingouin 是一個開源的統計套件,其中有許多統計的功能,除了畫 Q-Q Plot 之外,還可以計算 T-test、Pearson's correlation、Test of normality、ANOVA 等。若是不太有能力自己寫出統計相關的 code,推薦使用 pingouin。
pingouin 網站中的引導頁面中還有介紹執行各種統計方法的步驟,以樹狀圖的方式說明判斷要使用哪種統計方法與相應的程式碼,樹狀圖擷取如下。
url = 'https://pingouin-stats.org/build/html/_images/flowchart_one_way_ANOVA.svg'
Image(url=url)
url = 'https://pingouin-stats.org/build/html/_images/flowchart_correlations.svg'
Image(url=url)
url = 'https://pingouin-stats.org/build/html/_images/flowchart_nonparametric.svg'
Image(url=url)
以下先安裝套件,再畫 Q-Q Plot。
!pip install pingouin
圖片由上到下分別為
的 Q-Q Plot,其中紅色虛線為 $95%$ 信心水準下的信賴上界與下界。
觀察 Q-Q Plot ,Sepal Length 與 Sepal Width 共 2 變數的分布較為接近常態分配;而另位 2 個變數看起來像是雙峰分布(雖從直方圖看來不一定是雙峰分布),所以不為常態分配。
import pingouin as pg
for i in range(len(figures)):
pg.qqplot(df[figures[i]])
plt.show()
''
n, p = df.shape
(n, p)
from sklearn.model_selection import train_test_split
# Divide dataset into predictive variables and response variable.
X, y = df[figures], df['class']
# Take (1 - test_size) * 150 samples as training data, and the other as testing data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=20241006)
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)`
從 X_train
、y_train
確認資料是否已經打亂了。確認資料已確實打散。
X_train.head()
X_train.describe()
y_train.value_counts()